package model;

import java.util.ArrayList;
import java.util.HashMap;

import exceptions.AttribuutBestaatNietException;
import exceptions.LijstenNietEvenLangException;
import exceptions.RecordWaardeNietGevondenException;

public class Record {
	
	private HashMap<String, String> records;
	private int id;
	
	public Record(String[] namen, String[] waardes, int id) {
		records = new HashMap<String, String>();
		for(int i=0; i<namen.length; i++) {
			records.put(namen[i], waardes[i]);
		}
		this.id = id;
	}
	
	public void update(String[] namen, String[] waardes) throws LijstenNietEvenLangException {
		if(namen.length != waardes.length) {
			throw new LijstenNietEvenLangException("Lijsten voor update zijn niet even lang");
		}
		
		for(int i=0; i<namen.length; i++) {
			records.put(namen[i], waardes[i]);
		}
	}
	
	public String getRecord(String key) throws AttribuutBestaatNietException {
		String result = records.get(key);
		if(result == null) {
			throw new AttribuutBestaatNietException("Attribuut " + key + " bestaat niet in record.");
		}
		return result;
	}
	
	public int getId() {
		return id;
	}
	
	public String toString(ArrayList<String> keys) throws RecordWaardeNietGevondenException {
		String result = "";
		for(String key : keys) {
			if(!records.containsKey(key)) {
				throw new RecordWaardeNietGevondenException("Record row is niet gevonden");
			}
			for(String string : records.keySet()) {
				if(string.equals(key)) {
					result += records.get(string) + " | ";
				}
			}
		}
		return result;
	}
	
	public String toString() {
		String output = "";
		
		for(String naam: records.keySet()) {
			if(naam != null) {
				output += records.get(naam) + " | ";
			} else {
				output += "\t | ";
			}
		}
		return output;
	}
}
